# frozen_string_literal: true

# Copyright (c) 2017-2025 Tencent. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

module TencentCloud
  module Ags
    module V20250920
      # API密钥简略信息
      class APIKeyInfo < TencentCloud::Common::AbstractModel
        # @param Name: API密钥名称
        # @type Name: String
        # @param KeyId: API密钥ID
        # @type KeyId: String
        # @param Status: 密钥状态。可以为API_KEY_STATUS_ACTIVE，或API_KEY_STATUS_INACTIVE
        # @type Status: String
        # @param MaskedKey: 隐藏部分字符的API密钥，方便用户辨认
        # @type MaskedKey: String
        # @param CreatedAt: API密钥创建时间
        # @type CreatedAt: String

        attr_accessor :Name, :KeyId, :Status, :MaskedKey, :CreatedAt

        def initialize(name=nil, keyid=nil, status=nil, maskedkey=nil, createdat=nil)
          @Name = name
          @KeyId = keyid
          @Status = status
          @MaskedKey = maskedkey
          @CreatedAt = createdat
        end

        def deserialize(params)
          @Name = params['Name']
          @KeyId = params['KeyId']
          @Status = params['Status']
          @MaskedKey = params['MaskedKey']
          @CreatedAt = params['CreatedAt']
        end
      end

      # AcquireSandboxInstanceToken请求参数结构体
      class AcquireSandboxInstanceTokenRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 沙箱实例ID，生成的访问Token将仅可用于访问此沙箱实例
        # @type InstanceId: String

        attr_accessor :InstanceId

        def initialize(instanceid=nil)
          @InstanceId = instanceid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
        end
      end

      # AcquireSandboxInstanceToken返回参数结构体
      class AcquireSandboxInstanceTokenResponse < TencentCloud::Common::AbstractModel
        # @param Token: 访问Token
        # @type Token: String
        # @param ExpiresAt: 过期时间
        # @type ExpiresAt: String
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Token, :ExpiresAt, :RequestId

        def initialize(token=nil, expiresat=nil, requestid=nil)
          @Token = token
          @ExpiresAt = expiresat
          @RequestId = requestid
        end

        def deserialize(params)
          @Token = params['Token']
          @ExpiresAt = params['ExpiresAt']
          @RequestId = params['RequestId']
        end
      end

      # CreateAPIKey请求参数结构体
      class CreateAPIKeyRequest < TencentCloud::Common::AbstractModel
        # @param Name: API密钥名称，方便用户记忆
        # @type Name: String

        attr_accessor :Name

        def initialize(name=nil)
          @Name = name
        end

        def deserialize(params)
          @Name = params['Name']
        end
      end

      # CreateAPIKey返回参数结构体
      class CreateAPIKeyResponse < TencentCloud::Common::AbstractModel
        # @param Name: 用户传入的API密钥名称，方便用户记忆
        # @type Name: String
        # @param APIKey: 生成的API密钥，仅返回此一次，后续无法获取
        # @type APIKey: String
        # @param KeyId: API密钥ID
        # @type KeyId: String
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Name, :APIKey, :KeyId, :RequestId

        def initialize(name=nil, apikey=nil, keyid=nil, requestid=nil)
          @Name = name
          @APIKey = apikey
          @KeyId = keyid
          @RequestId = requestid
        end

        def deserialize(params)
          @Name = params['Name']
          @APIKey = params['APIKey']
          @KeyId = params['KeyId']
          @RequestId = params['RequestId']
        end
      end

      # CreateSandboxTool请求参数结构体
      class CreateSandboxToolRequest < TencentCloud::Common::AbstractModel
        # @param ToolName: 沙箱工具名称，长度 1-50 字符，支持英文、数字、下划线和连接线。同一 AppId 下沙箱工具名称必须唯一
        # @type ToolName: String
        # @param ToolType: 沙箱工具类型，目前支持：browser、code-interpreter
        # @type ToolType: String
        # @param NetworkConfiguration: 网络配置
        # @type NetworkConfiguration: :class:`Tencentcloud::Ags.v20250920.models.NetworkConfiguration`
        # @param Description: 沙箱工具描述，最大长度 200 字符
        # @type Description: String
        # @param DefaultTimeout: 默认超时时间，支持格式：5m、300s、1h 等，不指定则使用系统默认值（5 分钟）。最大 24 小时
        # @type DefaultTimeout: String
        # @param Tags: 标签规格，为沙箱工具绑定标签，支持多种资源类型的标签绑定
        # @type Tags: Array
        # @param ClientToken: 幂等性 Token，长度不超过 64 字符
        # @type ClientToken: String

        attr_accessor :ToolName, :ToolType, :NetworkConfiguration, :Description, :DefaultTimeout, :Tags, :ClientToken

        def initialize(toolname=nil, tooltype=nil, networkconfiguration=nil, description=nil, defaulttimeout=nil, tags=nil, clienttoken=nil)
          @ToolName = toolname
          @ToolType = tooltype
          @NetworkConfiguration = networkconfiguration
          @Description = description
          @DefaultTimeout = defaulttimeout
          @Tags = tags
          @ClientToken = clienttoken
        end

        def deserialize(params)
          @ToolName = params['ToolName']
          @ToolType = params['ToolType']
          unless params['NetworkConfiguration'].nil?
            @NetworkConfiguration = NetworkConfiguration.new
            @NetworkConfiguration.deserialize(params['NetworkConfiguration'])
          end
          @Description = params['Description']
          @DefaultTimeout = params['DefaultTimeout']
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @ClientToken = params['ClientToken']
        end
      end

      # CreateSandboxTool返回参数结构体
      class CreateSandboxToolResponse < TencentCloud::Common::AbstractModel
        # @param ToolId: 创建的沙箱工具 ID
        # @type ToolId: String
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ToolId, :RequestId

        def initialize(toolid=nil, requestid=nil)
          @ToolId = toolid
          @RequestId = requestid
        end

        def deserialize(params)
          @ToolId = params['ToolId']
          @RequestId = params['RequestId']
        end
      end

      # DeleteAPIKey请求参数结构体
      class DeleteAPIKeyRequest < TencentCloud::Common::AbstractModel
        # @param KeyId: 需要删除的API密钥ID
        # @type KeyId: String

        attr_accessor :KeyId

        def initialize(keyid=nil)
          @KeyId = keyid
        end

        def deserialize(params)
          @KeyId = params['KeyId']
        end
      end

      # DeleteAPIKey返回参数结构体
      class DeleteAPIKeyResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DeleteSandboxTool请求参数结构体
      class DeleteSandboxToolRequest < TencentCloud::Common::AbstractModel
        # @param ToolId: 沙箱工具ID
        # @type ToolId: String

        attr_accessor :ToolId

        def initialize(toolid=nil)
          @ToolId = toolid
        end

        def deserialize(params)
          @ToolId = params['ToolId']
        end
      end

      # DeleteSandboxTool返回参数结构体
      class DeleteSandboxToolResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # DescribeAPIKeyList请求参数结构体
      class DescribeAPIKeyListRequest < TencentCloud::Common::AbstractModel


        def initialize()
        end

        def deserialize(params)
        end
      end

      # DescribeAPIKeyList返回参数结构体
      class DescribeAPIKeyListResponse < TencentCloud::Common::AbstractModel
        # @param APIKeySet: API密钥简略信息列表。
        # @type APIKeySet: Array
        # @param TotalCount: 列表中API密钥数量
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :APIKeySet, :TotalCount, :RequestId

        def initialize(apikeyset=nil, totalcount=nil, requestid=nil)
          @APIKeySet = apikeyset
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['APIKeySet'].nil?
            @APIKeySet = []
            params['APIKeySet'].each do |i|
              apikeyinfo_tmp = APIKeyInfo.new
              apikeyinfo_tmp.deserialize(i)
              @APIKeySet << apikeyinfo_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # DescribeSandboxInstanceList请求参数结构体
      class DescribeSandboxInstanceListRequest < TencentCloud::Common::AbstractModel
        # @param InstanceIds: 沙箱实例ID列表，指定要查询的实例。如果为空则查询所有实例。最大支持100个ID
        # @type InstanceIds: Array
        # @param ToolId: 沙箱工具ID，指定时查询该沙箱模板下的实例，为空则查询所有沙箱模板的实例
        # @type ToolId: String
        # @param Offset: 偏移量，默认为0
        # @type Offset: Integer
        # @param Limit: 返回数量，默认为20，最大值为100
        # @type Limit: Integer
        # @param Filters: 过滤条件
        # @type Filters: Array

        attr_accessor :InstanceIds, :ToolId, :Offset, :Limit, :Filters

        def initialize(instanceids=nil, toolid=nil, offset=nil, limit=nil, filters=nil)
          @InstanceIds = instanceids
          @ToolId = toolid
          @Offset = offset
          @Limit = limit
          @Filters = filters
        end

        def deserialize(params)
          @InstanceIds = params['InstanceIds']
          @ToolId = params['ToolId']
          @Offset = params['Offset']
          @Limit = params['Limit']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
        end
      end

      # DescribeSandboxInstanceList返回参数结构体
      class DescribeSandboxInstanceListResponse < TencentCloud::Common::AbstractModel
        # @param InstanceSet: 沙箱实例列表
        # @type InstanceSet: Array
        # @param TotalCount: 符合条件的实例总数
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :InstanceSet, :TotalCount, :RequestId

        def initialize(instanceset=nil, totalcount=nil, requestid=nil)
          @InstanceSet = instanceset
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['InstanceSet'].nil?
            @InstanceSet = []
            params['InstanceSet'].each do |i|
              sandboxinstance_tmp = SandboxInstance.new
              sandboxinstance_tmp.deserialize(i)
              @InstanceSet << sandboxinstance_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # DescribeSandboxToolList请求参数结构体
      class DescribeSandboxToolListRequest < TencentCloud::Common::AbstractModel
        # @param ToolIds: 沙箱工具ID列表，指定要查询的工具。如果为空则查询所有工具。最大支持100个ID
        # @type ToolIds: Array
        # @param Offset: 偏移量，默认为0
        # @type Offset: Integer
        # @param Limit: 返回数量，默认为20，最大值为100
        # @type Limit: Integer
        # @param Filters: 过滤条件
        # @type Filters: Array

        attr_accessor :ToolIds, :Offset, :Limit, :Filters

        def initialize(toolids=nil, offset=nil, limit=nil, filters=nil)
          @ToolIds = toolids
          @Offset = offset
          @Limit = limit
          @Filters = filters
        end

        def deserialize(params)
          @ToolIds = params['ToolIds']
          @Offset = params['Offset']
          @Limit = params['Limit']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
        end
      end

      # DescribeSandboxToolList返回参数结构体
      class DescribeSandboxToolListResponse < TencentCloud::Common::AbstractModel
        # @param SandboxToolSet: 沙箱工具列表
        # @type SandboxToolSet: Array
        # @param TotalCount: 符合条件的沙箱工具总数
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SandboxToolSet, :TotalCount, :RequestId

        def initialize(sandboxtoolset=nil, totalcount=nil, requestid=nil)
          @SandboxToolSet = sandboxtoolset
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['SandboxToolSet'].nil?
            @SandboxToolSet = []
            params['SandboxToolSet'].each do |i|
              sandboxtool_tmp = SandboxTool.new
              sandboxtool_tmp.deserialize(i)
              @SandboxToolSet << sandboxtool_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # 过滤列表规则
      class Filter < TencentCloud::Common::AbstractModel
        # @param Name: 属性名称, 若存在多个Filter时，Filter间的关系为逻辑与（AND）关系。
        # @type Name: String
        # @param Values: 属性值, 若同一个Filter存在多个Values，同一Filter下Values间的关系为逻辑或（OR）关系。
        # @type Values: Array

        attr_accessor :Name, :Values

        def initialize(name=nil, values=nil)
          @Name = name
          @Values = values
        end

        def deserialize(params)
          @Name = params['Name']
          @Values = params['Values']
        end
      end

      # 沙箱网络配置
      class NetworkConfiguration < TencentCloud::Common::AbstractModel
        # @param NetworkMode: 网络模式（当前支持 PUBLIC）
        # @type NetworkMode: String

        attr_accessor :NetworkMode

        def initialize(networkmode=nil)
          @NetworkMode = networkmode
        end

        def deserialize(params)
          @NetworkMode = params['NetworkMode']
        end
      end

      # 沙箱实例结构体
      class SandboxInstance < TencentCloud::Common::AbstractModel
        # @param InstanceId: 沙箱实例唯一标识符
        # @type InstanceId: String
        # @param ToolId: 所属沙箱工具 ID
        # @type ToolId: String
        # @param ToolName: 所属沙箱工具名称
        # @type ToolName: String
        # @param Status: 实例状态：STARTING（启动中）、RUNNING（运行中）、STOPPING（停止中）、STOPPED（已停止）、STOP_FAILED（停止失败）、FAILED（失败状态）
        # @type Status: String
        # @param TimeoutSeconds: 超时时间（秒），null 表示无超时设置
        # @type TimeoutSeconds: Integer
        # @param ExpiresAt: 过期时间（ISO 8601 格式），null 表示无过期时间
        # @type ExpiresAt: String
        # @param StopReason: 停止原因：manual（手动）、timeout（超时）、error（错误）、system（系统），仅在状态为 STOPPED、STOP_FAILED 或 FAILED 时有值。当 provider 停止失败时，状态为 STOP_FAILED，原因为 error
        # @type StopReason: String
        # @param CreateTime: 创建时间（ISO 8601 格式）
        # @type CreateTime: String
        # @param UpdateTime: 更新时间（ISO 8601 格式）
        # @type UpdateTime: String

        attr_accessor :InstanceId, :ToolId, :ToolName, :Status, :TimeoutSeconds, :ExpiresAt, :StopReason, :CreateTime, :UpdateTime

        def initialize(instanceid=nil, toolid=nil, toolname=nil, status=nil, timeoutseconds=nil, expiresat=nil, stopreason=nil, createtime=nil, updatetime=nil)
          @InstanceId = instanceid
          @ToolId = toolid
          @ToolName = toolname
          @Status = status
          @TimeoutSeconds = timeoutseconds
          @ExpiresAt = expiresat
          @StopReason = stopreason
          @CreateTime = createtime
          @UpdateTime = updatetime
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @ToolId = params['ToolId']
          @ToolName = params['ToolName']
          @Status = params['Status']
          @TimeoutSeconds = params['TimeoutSeconds']
          @ExpiresAt = params['ExpiresAt']
          @StopReason = params['StopReason']
          @CreateTime = params['CreateTime']
          @UpdateTime = params['UpdateTime']
        end
      end

      # 沙箱工具结构体
      class SandboxTool < TencentCloud::Common::AbstractModel
        # @param ToolId: 沙箱工具唯一标识符
        # @type ToolId: String
        # @param ToolName: 沙箱工具名称，长度 1-50 字符，支持中英文、数字、下划线。同一 AppId 下沙箱工具名称必须唯一
        # @type ToolName: String
        # @param ToolType: 沙箱工具类型，取值：browser（浏览器工具）、code-interpreter（代码解释器工具）、computer（计算机控制工具）、mobile（移动设备工具）
        # @type ToolType: String
        # @param Status: 沙箱工具状态，取值：CREATING（创建中）、ACTIVE（可用）、DELETING（删除中）、FAILED（失败）
        # @type Status: String
        # @param Description: 沙箱工具描述信息，最大长度 200 字符
        # @type Description: String
        # @param DefaultTimeoutSeconds: 默认超时时间，支持格式：5m、300s、1h 等，不指定则使用系统默认值（5 分钟）。最大 24 小时
        # @type DefaultTimeoutSeconds: Integer
        # @param NetworkConfiguration: 网络配置
        # @type NetworkConfiguration: :class:`Tencentcloud::Ags.v20250920.models.NetworkConfiguration`
        # @param Tags: 标签规格，包含资源标签绑定关系。用于为沙箱工具绑定标签，支持多种资源类型的标签绑定
        # @type Tags: Array
        # @param CreateTime: 沙箱工具创建时间，格式：ISO8601
        # @type CreateTime: String
        # @param UpdateTime: 沙箱工具更新时间，格式：ISO8601
        # @type UpdateTime: String

        attr_accessor :ToolId, :ToolName, :ToolType, :Status, :Description, :DefaultTimeoutSeconds, :NetworkConfiguration, :Tags, :CreateTime, :UpdateTime

        def initialize(toolid=nil, toolname=nil, tooltype=nil, status=nil, description=nil, defaulttimeoutseconds=nil, networkconfiguration=nil, tags=nil, createtime=nil, updatetime=nil)
          @ToolId = toolid
          @ToolName = toolname
          @ToolType = tooltype
          @Status = status
          @Description = description
          @DefaultTimeoutSeconds = defaulttimeoutseconds
          @NetworkConfiguration = networkconfiguration
          @Tags = tags
          @CreateTime = createtime
          @UpdateTime = updatetime
        end

        def deserialize(params)
          @ToolId = params['ToolId']
          @ToolName = params['ToolName']
          @ToolType = params['ToolType']
          @Status = params['Status']
          @Description = params['Description']
          @DefaultTimeoutSeconds = params['DefaultTimeoutSeconds']
          unless params['NetworkConfiguration'].nil?
            @NetworkConfiguration = NetworkConfiguration.new
            @NetworkConfiguration.deserialize(params['NetworkConfiguration'])
          end
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
          @CreateTime = params['CreateTime']
          @UpdateTime = params['UpdateTime']
        end
      end

      # StartSandboxInstance请求参数结构体
      class StartSandboxInstanceRequest < TencentCloud::Common::AbstractModel
        # @param ToolId: 沙箱工具 ID，与 ToolName 至少有一个要填
        # @type ToolId: String
        # @param ToolName: 沙箱工具名称，与 ToolId 至少有一个要填
        # @type ToolName: String
        # @param Timeout: 超时时间，超过这个时间就自动回收实例。支持格式：5m、300s、1h 等，默认 5m。最小 30s，最大 24h
        # @type Timeout: String
        # @param ClientToken: 幂等性 Token，长度不超过 64 字符
        # @type ClientToken: String

        attr_accessor :ToolId, :ToolName, :Timeout, :ClientToken

        def initialize(toolid=nil, toolname=nil, timeout=nil, clienttoken=nil)
          @ToolId = toolid
          @ToolName = toolname
          @Timeout = timeout
          @ClientToken = clienttoken
        end

        def deserialize(params)
          @ToolId = params['ToolId']
          @ToolName = params['ToolName']
          @Timeout = params['Timeout']
          @ClientToken = params['ClientToken']
        end
      end

      # StartSandboxInstance返回参数结构体
      class StartSandboxInstanceResponse < TencentCloud::Common::AbstractModel
        # @param Instance: 创建的沙箱实例完整信息
        # @type Instance: :class:`Tencentcloud::Ags.v20250920.models.SandboxInstance`
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Instance, :RequestId

        def initialize(instance=nil, requestid=nil)
          @Instance = instance
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Instance'].nil?
            @Instance = SandboxInstance.new
            @Instance.deserialize(params['Instance'])
          end
          @RequestId = params['RequestId']
        end
      end

      # StopSandboxInstance请求参数结构体
      class StopSandboxInstanceRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 沙箱实例ID
        # @type InstanceId: String

        attr_accessor :InstanceId

        def initialize(instanceid=nil)
          @InstanceId = instanceid
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
        end
      end

      # StopSandboxInstance返回参数结构体
      class StopSandboxInstanceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 标签
      class Tag < TencentCloud::Common::AbstractModel
        # @param Key: 标签键
        # @type Key: String
        # @param Value: 标签值
        # @type Value: String

        attr_accessor :Key, :Value

        def initialize(key=nil, value=nil)
          @Key = key
          @Value = value
        end

        def deserialize(params)
          @Key = params['Key']
          @Value = params['Value']
        end
      end

      # UpdateSandboxInstance请求参数结构体
      class UpdateSandboxInstanceRequest < TencentCloud::Common::AbstractModel
        # @param InstanceId: 沙箱实例ID
        # @type InstanceId: String
        # @param Timeout: 新的超时时间（从设置时开始重新计算超时），支持格式：5m、300s、1h等。最小30s，最大24h。如果不指定则保持原有超时设置
        # @type Timeout: String

        attr_accessor :InstanceId, :Timeout

        def initialize(instanceid=nil, timeout=nil)
          @InstanceId = instanceid
          @Timeout = timeout
        end

        def deserialize(params)
          @InstanceId = params['InstanceId']
          @Timeout = params['Timeout']
        end
      end

      # UpdateSandboxInstance返回参数结构体
      class UpdateSandboxInstanceResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # UpdateSandboxTool请求参数结构体
      class UpdateSandboxToolRequest < TencentCloud::Common::AbstractModel
        # @param ToolId: 沙箱工具ID
        # @type ToolId: String
        # @param Description: 沙箱工具描述，最大长度200字符
        # @type Description: String
        # @param NetworkConfiguration: 网络配置
        # @type NetworkConfiguration: :class:`Tencentcloud::Ags.v20250920.models.NetworkConfiguration`
        # @param Tags: 标签
        # @type Tags: Array

        attr_accessor :ToolId, :Description, :NetworkConfiguration, :Tags

        def initialize(toolid=nil, description=nil, networkconfiguration=nil, tags=nil)
          @ToolId = toolid
          @Description = description
          @NetworkConfiguration = networkconfiguration
          @Tags = tags
        end

        def deserialize(params)
          @ToolId = params['ToolId']
          @Description = params['Description']
          unless params['NetworkConfiguration'].nil?
            @NetworkConfiguration = NetworkConfiguration.new
            @NetworkConfiguration.deserialize(params['NetworkConfiguration'])
          end
          unless params['Tags'].nil?
            @Tags = []
            params['Tags'].each do |i|
              tag_tmp = Tag.new
              tag_tmp.deserialize(i)
              @Tags << tag_tmp
            end
          end
        end
      end

      # UpdateSandboxTool返回参数结构体
      class UpdateSandboxToolResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID，由服务端生成，每次请求都会返回（若请求因其他原因未能抵达服务端，则该次请求不会获得 RequestId）。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

    end
  end
end

